/*
 * @Author: 彭林
 * @Date: 2021-05-13 19:31:47
 * @LastEditTime: 2021-07-14 18:29:37
 * @LastEditors: 彭林
 * @Description:
 * @FilePath: /saas-app/app/service/zuowen.go
 */
package service

import (
	"saas-app/app/dao"
	"saas-app/app/model"
)

type ZuowenRepository interface {
	CreateZuowen(zuowen *model.Zuowen) error
	GetZuowenList(page, limit int) (result interface{}, total int)
	GetZuowenLastId() (id int)
	GetZuowenInfo(zuowen_id uint) *model.Zuowen
}

type zuowen struct{}

func ZuowenService() ZuowenRepository {
	return &zuowen{}
}

func (z zuowen) CreateZuowen(zuowen *model.Zuowen) error {
	_, err := dao.Zuowen.Save(zuowen)
	return err
}

func (z zuowen) GetZuowenList(page, limit int) (result interface{}, total int) {

	if page <= 0 || limit <= 0 {
		panic("参数错误")
	}

	result, err := dao.Zuowen.Limit(limit).Offset(page).FindAll()

	if err != nil {
		panic(err)
	}

	total, err = dao.Zuowen.FindCount()

	if err != nil {
		panic(err)
	}

	return result, total
}

func (z zuowen) GetZuowenLastId() (id int) {
	record, err := dao.Zuowen.FindOne("desc")

	if err != nil {
		panic(err)
	}

	zuowen := &model.Zuowen{}
	record.Struct(&zuowen)
	if zuowen == nil {
		return 0
	}
	return int(zuowen.ZuowenId)
}

func (z zuowen) GetZuowenInfo(zuowen_id uint) *model.Zuowen {

	if zuowen_id <= 0 {
		panic("参数错误")
	}

	record, err := dao.Zuowen.FindOne("zuowen_id = ?", zuowen_id)

	if err != nil {
		panic(err)
	}

	zuowen := &model.Zuowen{}
	record.Struct(&zuowen)

	return zuowen
}
